// -----------------------------------------------------------------------
// pion-common: a collection of common libraries used by the Pion Platform
// -----------------------------------------------------------------------
// Copyright (C) 2007-2008 Atomic Labs, Inc.  (http://www.atomiclabs.com)
//
// Distributed under the Boost Software License, Version 1.0.
// See http://www.boost.org/LICENSE_1_0.txt
//

#ifndef __PION_PIONCONFIG_HEADER__
#define __PION_PIONCONFIG_HEADER__

// DO NOT USE autoheader ; this file is not automanaged!!!

// Other libraries should be added here as they become part of the configuration 
// used for binary releases.
#ifdef PION_FULL
#define PION_USE_LOG4CPLUS
#define PION_HAVE_SSL
#define PION_HAVE_JSON
#define PION_HAVE_PYTHON
#endif

/* Define to the version number of pion. */
#define PION_VERSION "3.0.9"

/* Define to the directory where Pion plug-ins are installed. */
//#undef PION_PLUGINS_DIRECTORY
#define PION_PLUGINS_DIRECTORY "."

/* Define to the directory where cygwin is installed. */
#undef PION_CYGWIN_DIRECTORY

// -----------------------------------------------------------------------
// hash_map support
//
// At least one of the following options should be defined.

/* Define to 1 if you have the <ext/hash_map> header file. */
#undef PION_HAVE_EXT_HASH_MAP

/* Define to 1 if you have the <hash_map> header file. */
//#undef PION_HAVE_HASH_MAP
#define PION_HAVE_HASH_MAP 1

/* Define to 1 if you have the <unordered_map> header file. */
#undef PION_HAVE_UNORDERED_MAP

// -----------------------------------------------------------------------
// Logging Options
//
// At most one of the logging options below should be defined.  If none of 
// them are defined, std::cout and std::cerr will be used for logging.

/* To use the `log4cplus' library for logging, include PION_USE_LOG4CPLUS or PION_FULL
   in Preprocessor Definitions, or uncomment the following line. */
//#define PION_USE_LOG4CPLUS

/* To use the `log4cxx' library for logging, include PION_USE_LOG4CXX
   in Preprocessor Definitions, or uncomment the following line. */
//#define PION_USE_LOG4CXX

/* To use the `log4cpp' library for logging, include PION_USE_LOG4CPP
   in Preprocessor Definitions, or uncomment the following line. */
//#define PION_USE_LOG4CPP

/* To disable logging, include PION_DISABLE_LOGGING in Preprocessor Definitions, 
   or uncomment the following line. */
//#define PION_DISABLE_LOGGING

// -----------------------------------------------------------------------

/* Define to 1 if you have the `zlib' library. */
#undef PION_HAVE_ZLIB

/* Define to 1 if you have the `bzlib' library. */
#undef PION_HAVE_BZLIB

/* Define to 1 if you have the `boost.lockfree' library. */
#undef PION_HAVE_LOCKFREE
//#define PION_HAVE_LOCKFREE 1

/* If you have the `OpenSSL' library installed, include PION_HAVE_SSL or PION_FULL
   in Preprocessor Definitions, or uncomment the following line, to use SSL. */
//#define PION_HAVE_SSL

#ifdef PION_HAVE_SSL
	#if defined _DEBUG
		#pragma comment(lib, "ssleay32d")
		#pragma comment(lib, "libeay32d")
	#else
		#pragma comment(lib, "ssleay32")
		#pragma comment(lib, "libeay32")
	#endif
#endif

/* If you have the `yajl' library installed, include PION_HAVE_JSON or PION_FULL
   in Preprocessor Definitions, or uncomment the following line, to use yajl. */
//#define PION_HAVE_JSON

/* If you have the `python' library installed, include PION_HAVE_PYTHON or PION_FULL
   in Preprocessor Definitions, or uncomment the following line, to use python. */
//#define PION_HAVE_PYTHON


#ifdef _WIN32
	#define PION_WIN32	1
#else
	#error PionConfig.hpp.win is for Win32 only.
#endif // _WIN32

#include <boost/config.hpp>

#ifdef _MSC_VER

	#ifdef PION_COMMON_EXPORTS
		#define PION_COMMON_API __declspec(dllexport)
	#elif defined PION_STATIC_LINKING
		#define PION_COMMON_API
	#else
		#define PION_COMMON_API __declspec(dllimport)
	#endif

	#ifdef PION_NET_EXPORTS
		#define PION_NET_API __declspec(dllexport)
	#elif defined PION_STATIC_LINKING
		#define PION_NET_API
	#else
		#define PION_NET_API __declspec(dllimport)
	#endif

	#ifdef PION_STATIC_LINKING
		#define PION_SERVICE_API 
	#else
		#define PION_SERVICE_API __declspec(dllexport)
	#endif

	#ifdef PION_STATIC_LINKING
		#define PION_PLUGIN_API
	#else
		#define PION_PLUGIN_API __declspec(dllexport)
	#endif

	#ifdef PION_PLATFORM_EXPORTS
		#define PION_PLATFORM_API __declspec(dllexport)
	#elif defined PION_STATIC_LINKING
		#define PION_PLATFORM_API
	#else
		#define PION_PLATFORM_API __declspec(dllimport)
	#endif

	#ifdef PION_SERVER_EXPORTS
		#define PION_SERVER_API __declspec(dllexport)
	#elif defined PION_STATIC_LINKING
		#define PION_SERVER_API
	#else
		#define PION_SERVER_API __declspec(dllimport)
	#endif

	/*
	Verify correctness of the PION_STATIC_LINKING setup
	*/
	#ifdef PION_STATIC_LINKING
		#ifdef _USRDLL
			#error Need to be compiled as a static library for PION_STATIC_LINKING
		#endif
	#endif

#endif // _MSC_VER

#endif //__PION_PIONCONFIG_HEADER__
